﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRMBussines
{
    public partial class CrmBussines : IDisposable
    {
        public List<Zona> ObtenZonas()
        {
            List<Zona> res = new List<Zona>();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            var zns = (from zon in db.Zonas select zon);
            res = zns.ToList<Zona>();

            return res;
        }

        public Zona ObtenZona(int id)
        {
            Zona de = new Zona();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.Zonas.Single(c => c.ZonasId == id);

            return de;
        }

        public void GuardaZona(Zona zona)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            db.Zonas.InsertOnSubmit(zona);
            db.SubmitChanges();
        }

        public void ActualizaZona(Zona zona)
        {
            Zona zon = new Zona();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.Zonas.Single(c => c.ZonasId == zona.ZonasId);
            zon.Descripcion = zona.Descripcion;

            db.SubmitChanges();
        }

        public void EliminaZona(int id)
        {
            Zona zon = new Zona();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.Zonas.Single(c => c.ZonasId == id);
            db.Zonas.DeleteOnSubmit(zon);
            db.SubmitChanges();
        }

        public IQueryable<resultadoDetalleZona> ObtenZonasDetalles(int id)
        {
            

            db = new CRMModelControladorDataContext(_cadenaConexion);

            IQueryable<resultadoDetalleZona> res = (from x in db.DetalleZonas 
                   where x.ZonasId == id
                                            select new resultadoDetalleZona()
                                            {
                                                DetalleZonasId = x.DetalleZonasId,
                                                ZonasId = x.ZonasId,
                                                Ciudad = x.CiudadPai.Nombre,
                                                Municipio = x.MunicipioPai.Nombre,
                                                Estado = x.EstadoPai.Nombre,
                                                CiudadId = x.CiudadPaisId,
                                                MunicipioId = x.MunicipioPaisId,
                                                EstadoId = x.EstadoPaisId
                                            }
                                            );


            return res;
        }

        public DetalleZona ObtenZonaDetalle(int id)
        {
            DetalleZona de = new DetalleZona();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            de = db.DetalleZonas.Single(c => c.DetalleZonasId == id);
            
            return de;
        }

        public void GuardaZonaDetalle(DetalleZona detalle)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            db.DetalleZonas.InsertOnSubmit(detalle);
            db.SubmitChanges();
        }

        public void ActualizaZonaDetalle(DetalleZona detalle)
        {
            DetalleZona zon = new DetalleZona();
            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.DetalleZonas.Single(c => c.DetalleZonasId == detalle.DetalleZonasId);
            zon.CiudadPaisId = detalle.CiudadPaisId;
            zon.MunicipioPaisId = detalle.MunicipioPaisId;
            zon.EstadoPaisId = detalle.EstadoPaisId;            

            db.SubmitChanges();
        }

        public void EliminaZonaDetalle(int id)
        {
            DetalleZona zon = new DetalleZona();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            zon = db.DetalleZonas.Single(c => c.DetalleZonasId == id);
            db.DetalleZonas.DeleteOnSubmit(zon);
            db.SubmitChanges();
        }   

    }

    public class resultadoDetalleZona
    {

        public int DetalleZonasId { get; set; }
        public int ZonasId { get; set; }
        public string Ciudad { get; set; }
        public string Municipio { get; set; }
        public string Estado { get; set; }
        public int CiudadId { get; set; }
        public int MunicipioId { get; set; }
        public int EstadoId { get; set; }
    }
}
